// For Loops (For循环) 示例
// 演示 Pascal 中 For 循环的各种用法

Program p_5_for_loops;

{$mode objfpc}{$H+}
// {$mode objfpc} 启用 Object Pascal 模式
// {$H+} 启用长字符串支持（AnsiString）

// 引入单元文件

Uses 
SysUtils;
// 系统工具单元，包含常用的系统函数

Var i, j, k, sum, x,y,idx: Integer;
  numbers: array[1..5] Of Integer;
  c : Char;

  // 程序主入口
Begin
  WriteLn('=== Pascal For 循环示例 ===');
  WriteLn;

  // 基本的递增循环 (1 to 5)
  WriteLn('1. 基本递增循环 (1 to 5):');
  For  i := 1 To 5 Do
    WriteLn('  循环次数: ', i);

  WriteLn;

  // 递减循环 (5 downto 1)
  WriteLn('2. 递减循环 (5 downto 1):');
  For  j := 5 Downto 1 Do
    WriteLn('  倒数: ', j);

  WriteLn;

  // 使用循环进行计算
  WriteLn('3. 使用循环进行计算:');
  sum := 0;
  For  k := 1 To 10 Do
    Begin
      sum := sum + k;
      WriteLn('  添加 ', k, ' 后总和: ', sum);
    End;
  WriteLn('  1到10的总和: ', sum);

  WriteLn;

  // 嵌套循环
  WriteLn('4. 嵌套循环 (乘法表):');
  For  x := 1 To 5 Do
    Begin
      For  y := 1 To 5 Do
        Begin
          Write(IntToStr(x * y): 4);
          // 格式化输出，每个数字占4个字符位置
        End;
      WriteLn;
      // 每行结束后换行
    End;

  WriteLn;

  // 字符循环
  WriteLn('5. 字符循环:');
  For  c := 'A' To 'E' Do
    WriteLn('  字符: ', c);

  WriteLn;

  // 循环与数组结合
  WriteLn('6. 循环与数组结合:');
  numbers[1] := 10;
  numbers[2] := 20;
  numbers[3] := 30;
  numbers[4] := 40;
  numbers[5] := 50;
  For  idx := 1 To 5 Do
    WriteLn('  numbers[', idx, '] = ', numbers[idx]);

  WriteLn;
  WriteLn('演示了 Pascal 中 For 循环的各种用法');

  // 等待用户按键，防止程序窗口立即关闭
  ReadLn;
End.
